2020年のパーフェクトPHP Part2
未検証の内容を含み、正確ではない内容を含むことを承知ください。
2章 PHPの基本
この章の内容は2020年現在でもあまり変わっておらず大筋において信頼できます
このあと原書のミスについて細かく指摘する箇所もありますが実用的な問題はないので気にしないでも構いません
2.1 基本的な構文
2.1.5 出力
細部のミスですが「print文」は「print式」が正しいです
これは2010年当時からそうです
2.1.8 予約語
PHPはバージョンを追うごとに予約語が増えています
PHP 5.4で追加された yield, trait, insteadof
PHP 5.5で追加された finally
PHP 7.4で追加されたfn
PHP 7.0.0 以降は、これらのキーワードを プロパティや定数の名前として使えるようになりました。 また、クラスやインターフェイスそしてトレイトのメソッド名としても使えるようになりました。 しかし、class だけは例外で、これを定数名として使うことはできません。
原書の2010年当時はできませんでした
キーワードおよび予約語(型名)はクラス名および名前空間の一部として利用できません
\Hoge\Int\Valueという名前は付けられないということです
2.1.9 エラー
ややこしいのですが、PHP7ではErrorというクラスが追加されました ここで紹介するエラーと似ていますが別物です
詳細については必要に合せて後で詳述します
error_reporting(E_ALL | E_STRICT);
これはPHP 5.3で全てのエラーを捕捉する方法でした
PHP 5.4以降は error_reporting(E_ALL);と書けば十分です
2.2 変数
2.2.4 定義済み変数
$data = file_get_contents('php://input');で置き換えられます
2.3 定数
2.3.1 定数定義
定数定義可能な値は、スカラー値(整数、浮動小数点数、文字列)のみで、配列はオブジェクト型は定数として定義することはできません。
PHP 5.6では constが定数式がサポートし、配列も定義できるようになりました constでの定数定義時に静的な式が書けるようになり、ほかの定数も利用できます。
code:php
const SEC = 1;
const MIN = 60 * SEC;
const HOUR = 60 * MIN;
PHP 7.0では define() 関数で配列も定義できるようになりました
2.3.3 定義済み定数
マジック定数はPHPマニュアルの日本語訳ではマジカル定数と表現されることもあります どちらが正しいということはなく、意味は同じです
PHP 5.5では新しいマジック定数として::classが追加されました use MyApp\Entity\Bookというインポートがあったとき、同じコード内でBook::classと書くと"MyApp\Entity\Book"という文字列に展開されます 2.4 エラー
WIP...